﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="PresenterFirstDSLSchema" targetNamespace="http://schemas.microsoft.com/dsltools/PresenterFirstDSL" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/PresenterFirstDSL" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- PresenterFirstDSLRoot -->
  <xsd:element name="presenterFirstDSLRoot" type="PresenterFirstDSLRoot" />
  <xsd:complexType name="PresenterFirstDSLRoot">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: PresenterFirstDSLRootHasPresenter -->
      <xsd:element name="presenter" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instance of PresenterFirstDSLRootHasPresenter</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1" >
              <xsd:element ref="presenterFirstDSLRootHasPresenter">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PresenterFirstDSLRootHasPresenter needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="presenter" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: PresenterFirstDSLRootHasModel -->
      <xsd:element name="model" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instance of PresenterFirstDSLRootHasModel</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1" >
              <xsd:element ref="presenterFirstDSLRootHasModel">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PresenterFirstDSLRootHasModel needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="model" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: PresenterFirstDSLRootHasView -->
      <xsd:element name="view" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instance of PresenterFirstDSLRootHasView</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1" >
              <xsd:element ref="presenterFirstDSLRootHasView">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PresenterFirstDSLRootHasView needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="view" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- dslVersion -->
    <xsd:attribute name="dslVersion" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Namespace -->
    <xsd:attribute name="namespace" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Parent namespace for the generated presenter, model and view.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: NamespaceImports -->
    <xsd:attribute name="namespaceImports" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Semi-colon delimited list of namespaces to import in the generated code. The imported namespaces are applied to the generated model, view, and presenter as Imports (using in C#) statements.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRoot Moniker -->
  <xsd:element name="presenterFirstDSLRootMoniker" type="PresenterFirstDSLRootMoniker" />
  <xsd:complexType name="PresenterFirstDSLRootMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterFirstDSLRoot instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Actor -->
  <xsd:element name="actor" abstract="true" type="Actor" />
  <xsd:complexType name="Actor" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: ActorHasEvents -->
      <xsd:element name="events" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of ActorHasEvents</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="actorHasEvents">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from ActorHasEvents needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="event" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: ActorHasActions -->
      <xsd:element name="actions" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of ActorHasActions</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="actorHasActions">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from ActorHasActions needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="action" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- Actor Moniker -->
  <xsd:element name="actorMoniker" abstract="true" type="ActorMoniker" />
  <xsd:complexType name="ActorMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Actor instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Model -->
  <xsd:element name="model" type="Model" substitutionGroup="actor" />
  <xsd:complexType name="Model">
    <xsd:complexContent>
      <xsd:extension base="Actor">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Model Moniker -->
  <xsd:element name="modelMoniker" type="ModelMoniker" substitutionGroup="actorMoniker" />
  <xsd:complexType name="ModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Model instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ActorMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- View -->
  <xsd:element name="view" type="View" substitutionGroup="actor" />
  <xsd:complexType name="View">
    <xsd:complexContent>
      <xsd:extension base="Actor">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- View Moniker -->
  <xsd:element name="viewMoniker" type="ViewMoniker" substitutionGroup="actorMoniker" />
  <xsd:complexType name="ViewMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for View instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ActorMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Action -->
  <xsd:element name="action" type="Action" />
  <xsd:complexType name="Action">
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" />
    <!-- Property: ExecutionOrder -->
    <xsd:attribute name="executionOrder" type="xsd:integer" >
      <xsd:annotation>
        <xsd:documentation>Sets the order of execution when there is more than one action for a feature.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Action Moniker -->
  <xsd:element name="actionMoniker" type="ActionMoniker" />
  <xsd:complexType name="ActionMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Action instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Event -->
  <xsd:element name="event" type="Event" />
  <xsd:complexType name="Event">
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" />
  </xsd:complexType>
  
  <!-- Event Moniker -->
  <xsd:element name="eventMoniker" type="EventMoniker" />
  <xsd:complexType name="EventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Event instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Parameter -->
  <xsd:element name="parameter" type="Parameter" substitutionGroup="typedElement" />
  <xsd:complexType name="Parameter">
    <xsd:complexContent>
      <xsd:extension base="TypedElement">
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Parameter Moniker -->
  <xsd:element name="parameterMoniker" abstract="true" type="ParameterMoniker" substitutionGroup="typedElementMoniker" />
  <xsd:complexType name="ParameterMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Parameter instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="TypedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Presenter -->
  <xsd:element name="presenter" type="Presenter" />
  <xsd:complexType name="Presenter">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: PresenterHasFeatures -->
      <xsd:element name="features" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of PresenterHasFeatures</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="unbounded" >
              <xsd:element ref="presenterHasFeatures">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PresenterHasFeatures needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="feature" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: PresenterHasPropertyCollection -->
      <xsd:element name="propertyCollection" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instance of PresenterHasPropertyCollection</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1" >
              <xsd:element ref="presenterHasPropertyCollection">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PresenterHasPropertyCollection needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="propertyCollection" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Presenter Moniker -->
  <xsd:element name="presenterMoniker" type="PresenterMoniker" />
  <xsd:complexType name="PresenterMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Presenter instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Feature -->
  <xsd:element name="feature" type="Feature" />
  <xsd:complexType name="Feature">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: FeatureHasParameters -->
      <xsd:element name="parameters" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of FeatureHasParameters</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="featureHasParameters">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from FeatureHasParameters needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="parameter" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: FeatureReferencesEvent -->
      <xsd:element name="event" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instance of FeatureReferencesEvent</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1" >
              <xsd:element ref="featureReferencesEvent">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from FeatureReferencesEvent needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="eventMoniker" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: FeatureReferencesActions -->
      <xsd:element name="actions" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of FeatureReferencesActions</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="unbounded" >
              <xsd:element ref="featureReferencesActions">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from FeatureReferencesActions needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="actionMoniker" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Documentation -->
    <xsd:attribute name="documentation" type="xsd:string" />
  </xsd:complexType>
  
  <!-- Feature Moniker -->
  <xsd:element name="featureMoniker" type="FeatureMoniker" />
  <xsd:complexType name="FeatureMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Feature instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- TypedElement -->
  <xsd:element name="typedElement" abstract="true" type="TypedElement" />
  <xsd:complexType name="TypedElement" abstract="true" >
    <!-- Property: Type -->
    <xsd:attribute name="type" type="TypeNameEnumeration" />
    <!-- Property: TypeName -->
    <xsd:attribute name="typeName" type="xsd:string" />
  </xsd:complexType>
  
  <!-- TypedElement Moniker -->
  <xsd:element name="typedElementMoniker" abstract="true" type="TypedElementMoniker" />
  <xsd:complexType name="TypedElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TypedElement instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Property -->
  <xsd:element name="property" type="Property" substitutionGroup="typedElement" />
  <xsd:complexType name="Property">
    <xsd:complexContent>
      <xsd:extension base="TypedElement">
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" use="required" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Property Moniker -->
  <xsd:element name="propertyMoniker" type="PropertyMoniker" substitutionGroup="typedElementMoniker" />
  <xsd:complexType name="PropertyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Property instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="TypedElementMoniker">
        <xsd:attribute name="name" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- PropertyCollection -->
  <xsd:element name="propertyCollection" type="PropertyCollection" />
  <xsd:complexType name="PropertyCollection">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: PropertyCollectionHasProperties -->
      <xsd:element name="properties" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of PropertyCollectionHasProperties</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="propertyCollectionHasProperties">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from PropertyCollectionHasProperties needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="property" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- PropertyCollection Moniker -->
  <xsd:element name="propertyCollectionMoniker" type="PropertyCollectionMoniker" />
  <xsd:complexType name="PropertyCollectionMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PropertyCollection instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasPresenter -->
  <xsd:element name="presenterFirstDSLRootHasPresenter" abstract="true" type="PresenterFirstDSLRootHasPresenter" />
  <xsd:complexType name="PresenterFirstDSLRootHasPresenter" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Presenter -->
      <xsd:element ref="presenter" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasPresenter Moniker -->
  <xsd:element name="presenterFirstDSLRootHasPresenterMoniker" abstract="true" type="PresenterFirstDSLRootHasPresenterMoniker" />
  <xsd:complexType name="PresenterFirstDSLRootHasPresenterMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterFirstDSLRootHasPresenter instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasModel -->
  <xsd:element name="presenterFirstDSLRootHasModel" abstract="true" type="PresenterFirstDSLRootHasModel" />
  <xsd:complexType name="PresenterFirstDSLRootHasModel" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Model -->
      <xsd:element ref="model" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasModel Moniker -->
  <xsd:element name="presenterFirstDSLRootHasModelMoniker" abstract="true" type="PresenterFirstDSLRootHasModelMoniker" />
  <xsd:complexType name="PresenterFirstDSLRootHasModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterFirstDSLRootHasModel instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasView -->
  <xsd:element name="presenterFirstDSLRootHasView" abstract="true" type="PresenterFirstDSLRootHasView" />
  <xsd:complexType name="PresenterFirstDSLRootHasView" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end View -->
      <xsd:element ref="view" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PresenterFirstDSLRootHasView Moniker -->
  <xsd:element name="presenterFirstDSLRootHasViewMoniker" abstract="true" type="PresenterFirstDSLRootHasViewMoniker" />
  <xsd:complexType name="PresenterFirstDSLRootHasViewMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterFirstDSLRootHasView instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FeatureHasParameters -->
  <xsd:element name="featureHasParameters" abstract="true" type="FeatureHasParameters" />
  <xsd:complexType name="FeatureHasParameters" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Parameter -->
      <xsd:element ref="parameter" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- FeatureHasParameters Moniker -->
  <xsd:element name="featureHasParametersMoniker" abstract="true" type="FeatureHasParametersMoniker" />
  <xsd:complexType name="FeatureHasParametersMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FeatureHasParameters instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PresenterHasFeatures -->
  <xsd:element name="presenterHasFeatures" abstract="true" type="PresenterHasFeatures" />
  <xsd:complexType name="PresenterHasFeatures" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Feature -->
      <xsd:element ref="feature" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PresenterHasFeatures Moniker -->
  <xsd:element name="presenterHasFeaturesMoniker" abstract="true" type="PresenterHasFeaturesMoniker" />
  <xsd:complexType name="PresenterHasFeaturesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterHasFeatures instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- ActorHasEvents -->
  <xsd:element name="actorHasEvents" abstract="true" type="ActorHasEvents" />
  <xsd:complexType name="ActorHasEvents" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Event -->
      <xsd:element ref="event" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ActorHasEvents Moniker -->
  <xsd:element name="actorHasEventsMoniker" abstract="true" type="ActorHasEventsMoniker" />
  <xsd:complexType name="ActorHasEventsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ActorHasEvents instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- ActorHasActions -->
  <xsd:element name="actorHasActions" abstract="true" type="ActorHasActions" />
  <xsd:complexType name="ActorHasActions" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Action -->
      <xsd:element ref="action" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ActorHasActions Moniker -->
  <xsd:element name="actorHasActionsMoniker" abstract="true" type="ActorHasActionsMoniker" />
  <xsd:complexType name="ActorHasActionsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ActorHasActions instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FeatureReferencesEvent -->
  <xsd:element name="featureReferencesEvent" abstract="true" type="FeatureReferencesEvent" />
  <xsd:complexType name="FeatureReferencesEvent" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Event -->
      <xsd:element ref="eventMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- FeatureReferencesEvent Moniker -->
  <xsd:element name="featureReferencesEventMoniker" abstract="true" type="FeatureReferencesEventMoniker" />
  <xsd:complexType name="FeatureReferencesEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FeatureReferencesEvent instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FeatureReferencesActions -->
  <xsd:element name="featureReferencesActions" abstract="true" type="FeatureReferencesActions" />
  <xsd:complexType name="FeatureReferencesActions" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Action -->
      <xsd:element ref="actionMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- FeatureReferencesActions Moniker -->
  <xsd:element name="featureReferencesActionsMoniker" abstract="true" type="FeatureReferencesActionsMoniker" />
  <xsd:complexType name="FeatureReferencesActionsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FeatureReferencesActions instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PresenterHasPropertyCollection -->
  <xsd:element name="presenterHasPropertyCollection" abstract="true" type="PresenterHasPropertyCollection" />
  <xsd:complexType name="PresenterHasPropertyCollection" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end PropertyCollection -->
      <xsd:element ref="propertyCollection" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PresenterHasPropertyCollection Moniker -->
  <xsd:element name="presenterHasPropertyCollectionMoniker" abstract="true" type="PresenterHasPropertyCollectionMoniker" />
  <xsd:complexType name="PresenterHasPropertyCollectionMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PresenterHasPropertyCollection instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PropertyCollectionHasProperties -->
  <xsd:element name="propertyCollectionHasProperties" abstract="true" type="PropertyCollectionHasProperties" />
  <xsd:complexType name="PropertyCollectionHasProperties" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Property -->
      <xsd:element ref="property" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PropertyCollectionHasProperties Moniker -->
  <xsd:element name="propertyCollectionHasPropertiesMoniker" abstract="true" type="PropertyCollectionHasPropertiesMoniker" />
  <xsd:complexType name="PropertyCollectionHasPropertiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PropertyCollectionHasProperties instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Enum TypeNameEnumeration -->
  <xsd:simpleType name="TypeNameEnumeration">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Boolean">
        <xsd:annotation>
          <xsd:documentation>Boolean</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Byte">
        <xsd:annotation>
          <xsd:documentation>Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Char">
        <xsd:annotation>
          <xsd:documentation>Char</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Date">
        <xsd:annotation>
          <xsd:documentation>Date</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DateTime">
        <xsd:annotation>
          <xsd:documentation>DateTime</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Decimal">
        <xsd:annotation>
          <xsd:documentation>Decimal</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Double">
        <xsd:annotation>
          <xsd:documentation>Double</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Enum">
        <xsd:annotation>
          <xsd:documentation>Enum</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Int16">
        <xsd:annotation>
          <xsd:documentation>Int16</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Int32">
        <xsd:annotation>
          <xsd:documentation>Int32</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Int64">
        <xsd:annotation>
          <xsd:documentation>Int64</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Object">
        <xsd:annotation>
          <xsd:documentation>Object</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Single">
        <xsd:annotation>
          <xsd:documentation>Single</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="String">
        <xsd:annotation>
          <xsd:documentation>String</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Structure">
        <xsd:annotation>
          <xsd:documentation>Structure</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="UserDefinedReferenceType">
        <xsd:annotation>
          <xsd:documentation>User defined complex reference type (non-value type), e.g. CustomerDataContract</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="UserDefinedValueType">
        <xsd:annotation>
          <xsd:documentation>User defined value type</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

